﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
using System.Runtime.InteropServices;


namespace LuckDraw.Utils
{
    public static class INIHelper
    {
        /// <summary>
        /// 写配置文件
        /// </summary>
        /// <param name="strAppName">段名</param>
        /// <param name="strKeyName">字段名</param>
        /// <param name="strString">内容</param>
        /// <param name="strFileName">文件路径包括名字</param>
        /// <returns>bool</returns>
        public static bool WriteIniString(string strAppName, string strKeyName, string strString, string strFileName)//写配置文件（段名，字段，字段值，路径）
        {
            strFileName = System.AppDomain.CurrentDomain.BaseDirectory  + strFileName.Replace(@".\", "");
            return WritePrivateProfileString(strAppName, strKeyName, strString, strFileName);
        }
        /// <summary>
        /// 以字符串形式读配置文件
        /// </summary>
        /// <param name="strAppName">段名</param>
        /// <param name="strKeyName">字段名</param>
        /// <param name="strDefault">默认值</param>
        /// <param name="sbReturnString">StringBuilder</param>
        /// <param name="nSize">StringBuilder大小</param>
        /// <param name="strFileName">文件路径包括名字</param>
        /// <returns>int</returns>
        public static string GetIniString(string strAppName, string strKeyName, string strDefault,string strFileName, int nSize=2048)//读配置文件 string（段名，字段，默认值，保存的strbuilder，大小，路径）
        {
            if (strKeyName == "节点操作列表")
                nSize = 20480;
            strFileName = System.AppDomain.CurrentDomain.BaseDirectory  + strFileName.Replace(@".\", "");
            StringBuilder sb = new StringBuilder();
            sb.Length = nSize;
            GetPrivateProfileString(strAppName, strKeyName, strDefault, sb, nSize, strFileName);
            return sb.ToString();
        }
        /// <summary>
        /// 以int形式读配置文件
        /// </summary>
        /// <param name="strAppName">段名</param>
        /// <param name="strKeyName">字段名</param>
        /// <param name="nDefault">默认值</param>
        /// <param name="strFileName">文件路径包括名字</param>
        /// <returns>int</returns>
        //public static int GetPrivateProfileInt(string strAppName, string strKeyName, int nDefault, string strFileName)//读配置文件 int（段名，字段，默认值，路径）
        //{
        //    strFileName = System.AppDomain.CurrentDomain.BaseDirectory  + strFileName.Replace(@".\", "");
        //    return _GetPrivateProfileInt(strAppName,strKeyName,nDefault,strFileName);
        //}

        /// <summary>
        /// 写配置文件
        /// </summary>
        /// <param name="strAppName">段名</param>
        /// <param name="strKeyName">字段名</param>
        /// <param name="strString">内容</param>
        /// <param name="strFileName">文件路径包括名字</param>
        /// <returns>bool</returns>
        [DllImport("Kernel32.dll")]
        private static extern bool WritePrivateProfileString(string strAppName, string strKeyName, string strString, string strFileName);//写配置文件（段名，字段，字段值，路径）

        /// <summary>
        /// 以字符串形式读配置文件
        /// </summary>
        /// <param name="strAppName">段名</param>
        /// <param name="strKeyName">字段名</param>
        /// <param name="strDefault">默认值</param>
        /// <param name="sbReturnString">StringBuilder</param>
        /// <param name="nSize">StringBuilder大小</param>
        /// <param name="strFileName">文件路径包括名字</param>
        /// <returns>int</returns>
        [DllImport("Kernel32.dll")]
        private static extern int GetPrivateProfileString(string strAppName, string strKeyName, string strDefault, StringBuilder sbReturnString, int nSize, string strFileName);//读配置文件 string（段名，字段，默认值，保存的strbuilder，大小，路径）

        /// <summary>
        /// 以int形式读配置文件
        /// </summary>
        /// <param name="strAppName">段名</param>
        /// <param name="strKeyName">字段名</param>
        /// <param name="nDefault">默认值</param>
        /// <param name="strFileName">文件路径包括名字</param>
        /// <returns>int</returns>
        [DllImport("Kernel32.dll")]
        private static extern int GetPrivateProfileInt(string strAppName, string strKeyName, int nDefault, string strFileName);//读配置文件 int（段名，字段，默认值，路径）
    }
}
